查看原文
其他

Cocos Creator 2.4.5 更新说明

Santy Wang COCOS 2022-06-10

在 Apple M1 芯片推出后,引擎组陆续收到了大家求适配的强烈的需求反馈,我们也在第一时间安排了 M1 芯片的适配,Cocos Creator 3.0 起已支持在 M1 芯片环境运行,v2.4.5 紧随其后,也正式支持了 M1 芯片环境。

上周 Cocos Creator 3.0.1 已经正式发布,v2.4.x 将做为 LTS(长期支持)版本,提供后续两年的持续更新,欢迎大家体验与使用!



What’s New  


  • 支持 Apple Silicon (M1) 芯片的运行环境


Bug Fixes  


  • 修复 effect 资源有语法错误时,导致内置 effect 加载失败的问题
  • 修复动画编辑器第一次进入,刻度条没有归 0 的问题
  • 修复编辑动画之后,组件上动画顺序变化的问题 [8295]
  • 修复在 onDestroy 中移除常驻节点时报错的问题 [8314]
  • 修复火狐浏览器 ScrollView 滚动速度与 Chrome 上不一致的问题 [8306]
  • 修复 iPad 上横屏玩竖屏游戏,SafeArea 错误的问题,感谢大城小胖 [224]


升级提示  


在 2021 年,v2.4 将继续更新版本,提供缺陷修复和新的小游戏平台支持,保障大家的项目成功上线;在 2022 年我们还将为开发者持续提供 v2.4 的关键问题修复,保障已上线的游戏平稳运营!因此:

  • 现有的 v2.x 项目可以安心继续开发,无需强制升级 v3.0。
  • 新项目则建议使用 v3.0 开发,我们会不断优化 v3.0 的开发体验和运行效率,支撑好 2D、3D 等不同品类的重度游戏顺利上线。

Cocos Creator 对项目的升级操作是不可逆的,请在升级前提交或备份旧版项目。绝大多数项目通常都能自动升级,但因为项目难免存在特殊性,开发者应该根据项目自身需求,提前对新版本引擎进行试用和评估。

此外,出于稳定性考虑,建议即将上线或已上线的项目谨慎升级。

以下是升级说明,如果开发者们在升级中遇到困难,欢迎向我们反馈,我们会尽力协助。


从 < 2.4.0 版本升级

  • cc.loader 已经不建议使用,请使用最新的 cc.assetManager 来代替,请参考 [资源管理模块升级指南]
  • 子包功能已升级为 Asset Bundle,请参考 [资源分包升级指南]
  • 调整了项目构建后的目录结构,调整了 BuildResults 的 API,如果你使用了编辑器插件获取编辑器构建结果,请参考 [定制项目构建流程升级指南]
  • 从 1.10 开始废弃的 cc.RawAsset 已被正式移除,请使用 cc.Asset 代替。由于 v2.4 不再兼容原有 1.x 项目中对 RawAsset 类型的历史遗留用法,建议所有要升级到 v2.4 的项目特别是从 1.9 版本一路升级上来的项目,先在任意的 1.10 ~ 2.3 版本中对编辑器编译代码时输出的所有警告或报错都正确处理完毕,再升级到 v2.4
  • cc.Color.fromHex 已被废弃,请使用 cc.Color.fromHEX 接口


从 < 2.3.3 版本升级
  • Effect 中的 CCTexture2DCCTexture2DRGB 方法已被废弃,请改用 CCTextureCCTextureRGB
  • Vec3.FRONT 已被废弃,请改用 Vec3.FORWARD

从 < 2.3.0 版本升级

从 2.3.0 开始,定制安卓原生工程时,需注意 Android 与 Android Instant 使用了同一个构建模板。

  • 如果是 Android 平台单独使用的代码请放入 app/src 目录,  单独使用的第三方库请放入 app/libs 目录。
  • 如果是 Android Instant 单独使用的代码和第三方库请分别放入 game/src, game/libs 目录。
  • 如果是 Android 和 Android Instant 共用的代码和第三方库,请分别放入根目录底下的  src 目录和 libs 目录。
  • proj.android-studio 目录下 jni/CocosAndroid.mkjni/CocosApplication.mk文件,主要用于引擎相关的配置,建议不要修改。开发者如果需要修改配置请参考以下内容:
    Android 平台请在 app/jni/Android.mkapp/jni/Application.mk中修改;
    Android Instant 请在 game/jni/Android.mkgame/jni/Application.mk 中修改。

此外,在 Cocos Creator 编译 Android 时会默认执行 assembleRelease/Debug,编译 Android Instant 时会执行 instant:assembleRelease/Debug

如自定义了音频前后台切换时的暂停逻辑,升级到 v2.3.0 后请移除。 

目前 Creator 游戏在所有平台上前后台互相切换时,都会在内部自动暂停和恢复音频。

如果开发者之前有对这一块进行过定制,监听并执行了 cc.audioEngine.pause()/resume() 之类的音频操作,可能会和引擎默认行为冲突。

如果有遇到相关的音频问题,只需移除相应的定制代码即可。


从 2.0 - 2.3.0 版本升级

从 v2.3.0 开始,Canvas 组件不再负责将 Canvas 节点尺寸设为屏幕大小,此行为将结合 Widget 组件实现。为保证兼容性,v2.0 项目升级后,Canvas 所在节点会自动添加 Widget 组件。(从 v1.x 的项目升级无此问题)


从 < 2.2.0 版本升级

从 v2.2.0 开始,我们强化了内存管理机制,现在要求用户通过代码动态创建且独立于场景节点树的 cc.Node 必须通过 destroy() 释放,否则引擎无法知道何时回收这类节点的内存,会导致内存泄露。

  • 如原先手动从场景中移除的节点,在不需要用到的时候也需要统一 destroy()

    // 假设 testNode 是场景中的某个节点,若之前被手动移出场景了,如testNode.parent = null;// 或者testNode.removeFromParent(true);// 或者parentNode.removeChild(testNode);// 若往后 testNode 还会再次用到,则无需手动 destroy 该节点// 否则应该手动调用testNode.destroy();


  • 如原先通过 cc.removeSelf 这个 action 销毁节点,请改为使用 cc.destroySelf
  • 如原先通过 cc.NodePool 管理节点,则不受影响。

从 v2.2.0 开始,我们不再建议你使用节点的 Skew 功能。

Skew 通常用作在 2D 引擎中模拟 3D 效果,随着 Cocos Creator 对 3D 节点的深入支持,Skew 效果已经完全可以由 3D 节点来实现。所以为了统一使用体验,进一步优化引擎底层实现,我们废弃了 Skew 属性。

不过我们依旧会保留一段时间内的向下兼容,开发者可在旧项目中延续原有做法。后续我们将进一步完善兼容方式和升级案例,择机正式移除 Skew 功能。

从 < 2.0 版本升级

打开 v1.x 项目的话,场景等所有资源将会自动升级,代码中的废弃接口从 v2.3.3 开始将会在保持兼容的基础上同步输出报错。升级方式可参考 [1.10 资源升级指南] [2.0 升级指南] 进行调整。



参考链接  


[资源管理模块升级指]

https://docs.cocos.com/creator/manual/zh/release-notes/asset-manager-upgrade-guide.html


[资源分包升级指南]

https://docs.cocos.com/creator/manual/zh/release-notes/subpackage-upgrade-guide.html


[定制项目构建流程升级指南]

https://docs.cocos.com/creator/manual/zh/release-notes/build-extend-upgrade-guide.html


[1.10 资源升级指南]

https://docs.cocos.com/creator/manual/zh/release-notes/raw-asset-migration.html


[2.0 升级指南]

https://docs.cocos.com/creator/manual/zh/release-notes/upgrade-guide-v2.0.html



往期精彩


戳【阅读原文】前往官网下载最新版本

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存